package cn.mongodb.entity;

import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

/**
 * 于SpringBoot集成Mongo这边，Mongo会将所有get方法都视作属性，并添加至集合中。
 * 而Object有getClass方法，它也会被视作属性的一部分加到表中。从而生成一个_class字段。
 * <p>
 * {@code @Document}: 设置文档所在的集合，默认情况下以类名首位小写，其余保持驼峰的形式命名。
 *
 * @author yexi
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
@Document("users")
public class User {

    /**
     * 文档的原生id是_id字段，它使用ObjectId类型封装。但由于较难应用所以我们可以自定义id(String类型更易操作)。
     * 通过为指定字段贴上@Id注解，对应的字段就会在保存时自动映射为_id并忽略掉原生的ObjectId类型值(注意前提是该字段值不为null，若为null则保留原生值)。
     * 若保存时_id值重复，则会用新值替换旧值
     */
    @Id
    private String id;
    private String name;
    private Integer age;
}